package niuke.week02;

import java.util.Scanner;

/**
 给出一组正整数arr，你初始在第一个数的位置，每个数的值表示你从这个位置可以向右跳跃的最大长度。
 计算如何以最少的跳跃次数跳到最后一个数。

 */
public class MinJump {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int []a = new int[n];
        for (int i = 0; i < n; i++)
            a[i] = sc.nextInt();

        int step =0;//当前走了几步
        int curRange = 0;//若不增加步数，最远能到哪？
        int nextRange = a[0];//若再增加一步，最远能到哪

        for (int i = 0; i < a.length; i++) {
            //必须要走出一步了
            if(i>curRange){
                step++;
                curRange = nextRange;
            }
            //每一次更新下次一最远能到哪
            nextRange = Math.max(nextRange,i+a[i]);
        }

        System.out.println(step);
    }

}